#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
    pid_t k;
    k = fork();
    if (k < 0)
    {
        fprintf(stderr, "fork error!\n");
        exit(-1);
    }
    else if (k == 0)
    {
        /*子进程*/
        printf("child %d parent is %d.\n", getpid(), getppid());
        sleep(20);
        exit(2);
    }
    else
    {
        pid_t y;
        int s = 0;
        /*等待子进程结束 : 死等*/
        // y = waitpid(k, &s, 0);

        /*等待子进程 ： 不死等*/
        y = waitpid(k, &s, WNOHANG);
        printf("parent %d waiting for %d status %d.\n", getpid(), y, WEXITSTATUS(s));
    }
    return 0;
}